home *** CD-ROM | disk | FTP | other *** search
Oberon Text | 1995-10-27 | 5.2 KB | 146 lines |
- Syntax20b.Scn.Fnt
- ParcElems
- Alloc
- Syntax24b.Scn.Fnt
- Syntax10.Scn.Fnt
- Syntax10b.Scn.Fnt
- FoldElems
- (* AMIGA *)
- MODULE AmigaMath; (* RD 6.8.1995 *)
- IMPORT
- SYSTEM, Amiga, AmigaExec, AmigaBase;
- BasLib, TransLib: LONGINT;
- Dummy: AmigaBase.Regs;
- PROCEDURE Entier*(s: REAL): LONGINT;
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(BasLib, -90, Dummy);
- AmigaBase.LibCall(BasLib, -30, Dummy);
- RETURN Dummy.d[0];
- END Entier;
- PROCEDURE IntToReal*(l: LONGINT; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=l;
- AmigaBase.LibCall(BasLib, -36, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END IntToReal;
- (* 1 if s1>s2 0 if s1=s2 -1 if s1<s2 *)
- PROCEDURE Cmp*(s1, s2: REAL): LONGINT;
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
- Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
- AmigaBase.LibCall(BasLib, -42, Dummy);
- RETURN Dummy.d[0];
- END Cmp;
- (* 1 if s>0 0 if s=0 -1 if s<0 *)
- PROCEDURE Tst*(s: REAL): LONGINT;
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(BasLib, -48, Dummy);
- RETURN Dummy.d[0];
- END Tst;
- PROCEDURE Abs*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(BasLib, -54, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Abs;
- PROCEDURE Neg*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(BasLib, -60, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Neg;
- PROCEDURE Add*(s1, s2: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
- Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
- AmigaBase.LibCall(BasLib, -66, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Add;
- PROCEDURE Sub*(s1, s2: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
- Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
- AmigaBase.LibCall(BasLib, -72, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Sub;
- PROCEDURE Mul*(s1, s2: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
- Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
- AmigaBase.LibCall(BasLib, -78, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Mul;
- PROCEDURE Div*(s1, s2: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s1);
- Dummy.d[1]:=SYSTEM.VAL(LONGINT, s2);
- AmigaBase.LibCall(BasLib, -84, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Div;
- PROCEDURE Arctan*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -30, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Arctan;
- PROCEDURE Cos*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -42, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Cos;
- PROCEDURE Sin*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -36, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Sin;
- PROCEDURE Ln*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -84, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Ln;
- PROCEDURE Exp*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -78, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Exp;
- PROCEDURE Sqrt*(s: REAL; VAR d: REAL);
- BEGIN
- Dummy.d[0]:=SYSTEM.VAL(LONGINT, s);
- AmigaBase.LibCall(TransLib, -96, Dummy);
- d:=SYSTEM.VAL(REAL, Dummy.d[0]);
- END Sqrt;
- (* returns s1/s2 *)
- PROCEDURE Ratio*(s1, s2: LONGINT; VAR d: REAL);
- VAR r1,r2: REAL;
- BEGIN
- IntToReal(s1, r1);
- IntToReal(s2,r2);
- Div(r1,r2,d);
- END Ratio;
- PROCEDURE e*(VAR d: REAL);
- BEGIN
- d:=SYSTEM.VAL(REAL, 0402DF854H);
- END e;
- PROCEDURE pi*(VAR d: REAL);
- BEGIN
- d:=SYSTEM.VAL(REAL, 040490FDBH);
- END pi;
- PROCEDURE TermProc;
- BEGIN
- Dummy.a[1]:=BasLib;
- IF BasLib#0 THEN AmigaBase.LibCall(AmigaBase.ExecBase(), -414, Dummy);END;
- Dummy.a[1]:=TransLib;
- IF TransLib#0 THEN AmigaBase.LibCall(AmigaBase.ExecBase(), -414, Dummy);END;
- END TermProc;
- BEGIN
- BasLib:=AmigaExec.OpenLibrary("mathieeesingbas.library", 0);
- TransLib:=AmigaExec.OpenLibrary("mathieeesingtrans.library", 0);
- Amiga.TermProcedure(TermProc);
- END AmigaMath.
-